home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload Trio 2
/
Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO
/
dir42
/
c7105.zip
/
TPXFIXES.DOC
< prev
next >
Wrap
Text File
|
1994-03-02
|
12KB
|
257 lines
Listing of all template fixes for the current release of CDD (3007.1)
This file covers Template Releases 3007.101 to 3007.105
──────────────────────────────────────────────────────────────────────────────
Fixes from 3007.100 to 3007.101
BROWSEs, when clicking the mouse in an area not occupied with a field(), which
complets ACCEPT with a FIELD() value of 0. Behavior prior to 3007.100 was to
clear the field in the list box that corresponded to any locator (commonly
known as "trashing the list box"). Behavior for 3007.100 was to not "trash
the list box", but to re-read the record (and associated lookups) when moving
about the screen using TAB and SHIFT-TAB. Neither behavior occurs in 3007.101
BROWSEs, the "When Field is Completed" and "When Field is Selected" code for
fields on the screen was not being executed in versions prior to 3007.101.
BROWSE totals were not being correctly handled on aborted deletions.
FORMs were not handling Logging of multiple instances of the same physical
file. A #PROMPT now asks to "Disable RI Logout" in this case. This case
only applies to using "ALIASed" files, as described in the "Multiple
Relations" example in the Advanced Example program.
FORMs were not including %Primary in the RI LOGOUT() statements.
PRINTs were not placing a trailing backslash (\) in the correct position
of the TempFile assignment when creating a TempFile name for use with the
SCREEN option (not clipping before concatenating).
BATCHs had EMBED('Setup Procedure') in the wrong place. That EMBED should
have been directly after the CODE statement.
VIEWs were not correctly handling the saving of screen size prior to entry,
and the restoration of size upon procedure exit.
──────────────────────────────────────────────────────────────────────────────
Fixes from 3007.101 to 3007.102
BROWSEs, pressing the CHANGE and DELETE button was not updating totals. The
problem was in the handling of the FIELD() of ?CHANGE or ?DELETE correctly.
BROWSEs, Automatic ADD code (when browse empty) not updating totals.
BROWSES, having a pre-?List field on the screen used as a Range Limit field
was not operating correctly (the field was being filled with value from record
before filling ?List, eliminating entered value).
REPORTs, generating duplicate PRINT::pre::FooterFields ROUTINE labels.
FORMs, not correctly handling the opening and closing of files used in the RI
processing. In 3007.102, I added one (two if closing unused files) ROUTINE(s)
each for Update and Delete. These ROUTINES are called in ConstrainedUpdate
ROUTINE and ConstrainedDelete ROUTINE, preventing file opening flags from
being mishandled. This fix is sufficient in 98% of the cases using RI. In
the future, a more complete fix will be provided, but I need to determine the
impact and plan accordingly.
CHILDs, not generating the correct FillQueue ROUTINE with multi-part keys.
──────────────────────────────────────────────────────────────────────────────
Fixes from 3007.102 to 3007.103
BROWSE - When coming back from Update Procedure, Browse was not always
getting SELECTed. Moved SELECT(?List) from each individual portion of code
that called Update Procedure to UpdateProcedure ROUTINE, insuring that the
call is always made, and reducing overhead (a little).
BROWSE - Removed the explicit screen close, and the "Before Screen
Closing" EMBED. This EMBED has only been in 3007, and should never have been
released. Please move any code in this EMBED to "End of Procedure" EMBED.
BROWSE, LOOKUP, VALIDATE, SELECT - Added Edit Code to the Locator (CASE
FIELD() code).
BROWSE, LOOKUP, VALIDATE, SELECT - Did not respond to Hot Keys on Insert,
Change, or Delete buttons.
BROWSE - If called in Select Mode, and if no Edit Buttons were on-screen, the
Selection was made whenever the ?List was completed, rather than dependent on
KEYCODE().
LOOKUP, VALIDATE - Added Variable SAV::PullDownOpened, decalred when a
PullDown is Declared. This variable is used to control the closing of a
PullDown structure inside the procedure. It is impossible to remove both
calls to CLOSE(PullDown) because CHANGE() needs access to the screen that
called the Lookup or Validate, and if the PullDown is active it's possible
that the CHANGE could be misdirected.
FORM21 - Was missing RI Initialization Code
FORM21 - Was incorrectly handling Auto-Increment Keys.
FILE - Was not resetting the active directory correctly, due to the placement
of a trailing backslash (\) in the directory name. Added code to clip off
the final path character.
FORM - LOC:Message was being disabled at various times during FORM
processing, most notably the DELETING of a record. LOC:Message not stays
ENABLED.
FORM, MULTIPAGE - #IF Stack overflows were being experienced on dense
Relation Trees (fix and six levels of constrained relations). I relocated
the recursicve call in UpdateRelationSearch and DeleteRelationSearch, removing
two #IFs from the stack for each call.
FORM, MULTIPAGE, FORM21 - Moved the #INSERTs to AbortTransactionMsg to before
the issuing of the ROLLBACK command. This allows the ERROR received to be
captured correctly. The call to ShowWarning takes place AFTER the ROLLBACK,
to try to prevent users from CtrlBreaking out of the program during
processing.
FORM, MULTIPAGE, PAGEOF - The SecondaryLookups ROUTINE was issuing a DISPLAY
before the screen was opened, causing erratic behaviour in the calling
procedure. The DISPLAY was removed from SecondaryLookups ROUTINE. A DISPLAY
already took place after the screen was opened.
FORM, MULTIPAGE, PAGEOF - The call to SecondaryLookups was being made only if
the Action was Change or Delete. This resulted in lookups not being
performed after fields were primed on an add, and values from a previous set
of Lookups being displayed on an add.
LIST - Added "Process Selected Record" EMBED, to be used when Hot Records are
enabled. This brings the operation of the LIST procedure more in line with
the functionality outlined in the HELP for the procedure.
REPORT - Moved INSERT to %SaveFooterFields to after record validation code.
REPORT - Code to save key fields during Group Breaks was only saving the
field that corresponded to the first Group Break of the KEY. It should have
been saving all key fields up to and including the first Group Break.
SCREEN - Added CLOSE(PullDown) to ProcedureReturn ROUTINE.
SCREEN - Added DISPLAY after Setup Screen EMBED.
VIEW - When the ?ChangeMode button was pressed, and the screen was in 50 Row
mode, the screen was placed into a Virtual Screen Mode. This was due to
SetArea being set before SetText, in essence, we put the screen into 25
row area with a 50 row window, then made the window 25 rows, but the screen
was still in 50 row mode.
──────────────────────────────────────────────────────────────────────────────
Fixes from 3007.103 to 3007.104
FILE - No longer generates Compile ERROR on SETPATH command in ProcedureReturn
ROUTINE.
──────────────────────────────────────────────────────────────────────────────
Fixes from 3007.104 to 3007.105
All Templates with PullDowns - Added pulldown handling code consisting of a
byte flag, declared as SAV::PullDownOpened. On the line after every
OPEN(%PullDown) in each procedure, this flag is set to true, and after every
CLOSE(%PullDown) the flag is set to false. IF you manipulate the PullDown in
your EMBED code, you need to manipulate this flag for the procedure to know
what to do!
Form and MultiPg - Rewrote the AutoIncrement code. AutoIncrement now works
with any key structure that I can think up to AutoIncrement. The following
rules have changed since 3007.105:
1. Higher level key elements are no longer cleared to high values.
The clearing to high levels actually accomplished little, since you
needed to use a PRIMEKEY formula to set up multiple key elements.
2. AutoNumber ROUTINE now calls two ROUTINES, SaveAutonumber and
NextAutoNumber. This separation was made so that AutoNumber would
work with recurring add procedures (Clear or Retain Record).
3. AutoNumbering keys now have a variable declared to store the value
of each key element. These variables are named Auto:%KeyField,
where %KeyField is the labal of the key element being stored.
If keys exist for %Primary which prohibit duplicates, no NOT exclude
nulls, and are not AutoNumbering, additional variables for the
Autonumbering key fields are created. These variables are named
Auto:Hold:%KeyField. These values are used to detect if the
autonumber values are generated the same on two consecutive passes
through the AutoNumber code. If so, a warning is generated. If you
get the error: "When adding a record, an unexplained Duplicate was
encountered." This warning is due to a design flaw in the generated
program, because of which the end-user is able to save a record with
empty key fields in a unique key that does not exclude nulls. The
entry fields corresponding to the key fields need to be required.
Otherwise, how can an AutoNumber record be created?
4. In the SaveAutonumber ROUTINE, we prime the key values for every
autonumbering key. Here's how we do it:
a. Process PRIMEKEY formulae to prime values. This is not
necessary with the 3007.105 templates, because in the
absence of PRIMEKEY formulae we use the key field values
that are already present in the record buffer. In
other words, with 3007.105 to prime your key fields you
only have to make the appropriate value assignments in your
"Setup Procedure" EMBED.
b. Use the current values of the key fields as they
are in the %Primary record buffer. Since the Browse
resets Range Limit values after clearing the record on an
ADD, in most cases this should not need to be done.
5. In NextAutoNumber, we search each autonumber key for the next
highest number, using the values saved in SaveAutoNumber. After
we've gotten the high value for each field, we restore values as
they were saves in SaveAutoNumber, restore the new AutoNumber
values, and attempt to add. If we fail because of duplicates, we
try again. If we fail for any other reason, we immediatly inform
the user.
6. %Primary is only being HELD if SharedFiles is set on. In a single
user system this HOLD is not necessary.
Several Misc Templates - Replaced BREAK and RETURN statements with DO
ProcedureReturns, as necessary.
Several Misc Templates - Move last ShowWarning constructions to WARNINGS.TPX
Relation.TPX - In the InitLogout and BtrieveTrxFraming GROUPs, ShowWarning
construction was taking place after the ROLLBACK, which clears out ERROR()
and ERRORCODE(), making the warning uninformative, to say the least.
Child - Added INSERT to %StandardHeader
View - Changed final SetPath to allow setting path back to root directory.
Form21 and MemForm21 - Moved the CASE KEYCODE() handling to a GROUP,
%Form21KeyHandling. This GROUP is located at the tail of CPD21.TPX, and
allows easier repairs.
Clarion.TPL - Added ProcedureReturn ROUTINEs to CheckOpen, DiskError, and
ShowWarning procedures and functions.
Clarion.TPL - Added LOC::ReturnValue to CheckOpen() and DiskErr() functions.
This value is RETURNed in ProcedureReturn.
Clarion.TPL - Added several new EMBED points in CheckOpen, DiskError, and
ShowWarning.
MultiPg and Form21 - Made the Message Prompts 30 characters in length.
Reports - Again, fixed problems with Group Breaks.
Reports - were reporting the entire contents of a file, even if Range Limit
set.
ScrnFlds.TPX - Was not generating code for fields that were not file related,
i.e. Global and Local data.
Browse, Validate, Select, Lookup - Were not updating the record on a form
called with CtrlEnter. Added SETKEYCODE(EnterKey) to that condition.